
$(document).ready(function() {
    $(".sns a,.linkmain a").addClass("tooltipblank");
    $(".tooltipblank").tipTip({
        delay: 0,
        defaultPosition: "top",
        maxWidth: "250px"
    }).show('fast');
});

~ (function($) {
        $.fn.tipTip = function(options) {
                var defaults = {
                        activation: "hover",
                        keepAlive: false,
                        maxWidth: "200px",
                        edgeOffset: 3,
                        defaultPosition: "bottom",
                        delay: 400,
                        fadeIn: 200,
                        fadeOut: 200,
                        attribute: "title",
                        content: false,
                        enter: function() {},
                        exit: function() {}
                };
                var opts = $.extend(defaults, options);
                if ($("#tiptip_holder").length <= 0) {
                        var tiptip_holder = $('<div id="tiptip_holder" style="max-width:' + opts.maxWidth + ';"></div>');
                        var tiptip_content = $('<div id="tiptip_content"></div>');
                        var tiptip_arrow = $('<div id="tiptip_arrow"></div>');
                        $("body").append(tiptip_holder.html(tiptip_content).prepend(tiptip_arrow.html('<div id="tiptip_arrow_inner"></div>')))
                } else {
                        var tiptip_holder = $("#tiptip_holder");
                        var tiptip_content = $("#tiptip_content");
                        var tiptip_arrow = $("#tiptip_arrow")
                }
                return this.each(function() {
                        var org_elem = $(this);
                        if (opts.content) {
                                var org_title = opts.content
                        } else {
                                var org_title = org_elem.attr(opts.attribute)
                        }
                        if (org_title != "") {
                                if (!opts.content) {
                                        org_elem.removeAttr(opts.attribute)
                                }
                                var timeout = false;
                                if (opts.activation == "hover") {
                                        org_elem.hover(function() {
                                                active_tiptip()
                                        },
                                        function() {
                                                if (!opts.keepAlive) {
                                                        deactive_tiptip()
                                                }
                                        });
                                        if (opts.keepAlive) {
                                                tiptip_holder.hover(function() {},
                                                function() {
                                                        deactive_tiptip()
                                                })
                                        }
                                } else if (opts.activation == "focus") {
                                        org_elem.focus(function() {
                                                active_tiptip()
                                        }).blur(function() {
                                                deactive_tiptip()
                                        })
                                } else if (opts.activation == "click") {
                                        org_elem.click(function() {
                                                active_tiptip();
                                                return false
                                        }).hover(function() {},
                                        function() {
                                                if (!opts.keepAlive) {
                                                        deactive_tiptip()
                                                }
                                        });
                                        if (opts.keepAlive) {
                                                tiptip_holder.hover(function() {},
                                                function() {
                                                        deactive_tiptip()
                                                })
                                        }
                                }
                                function active_tiptip() {
                                        opts.enter.call(this);
                                        tiptip_content.html(org_title);
                                        tiptip_holder.hide().removeAttr("class").css("margin", "0");
                                        tiptip_arrow.removeAttr("style");
                                        var top = parseInt(org_elem.offset()['top']);
                                        var left = parseInt(org_elem.offset()['left']);
                                        var org_width = parseInt(org_elem.outerWidth());
                                        var org_height = parseInt(org_elem.outerHeight());
                                        var tip_w = tiptip_holder.outerWidth();
                                        var tip_h = tiptip_holder.outerHeight();
                                        var w_compare = Math.round((org_width - tip_w) / 2);
                                        var h_compare = Math.round((org_height - tip_h) / 2);
                                        var marg_left = Math.round(left + w_compare);
                                        var marg_top = Math.round(top + org_height + opts.edgeOffset);
                                        var t_class = "";
                                        var arrow_top = "";
                                        var arrow_left = Math.round(tip_w - 12) / 2;
                                        if (opts.defaultPosition == "bottom") {
                                                t_class = "_bottom"
                                        } else if (opts.defaultPosition == "top") {
                                                t_class = "_top"
                                        } else if (opts.defaultPosition == "left") {
                                                t_class = "_left"
                                        } else if (opts.defaultPosition == "right") {
                                                t_class = "_right"
                                        }
                                        var right_compare = (w_compare + left) < parseInt($(window).scrollLeft());
                                        var left_compare = (tip_w + left) > parseInt($(window).width());
                                        if ((right_compare && w_compare < 0) || (t_class == "_right" && !left_compare) || (t_class == "_left" && left < (tip_w + opts.edgeOffset + 5))) {
                                                t_class = "_right";
                                                arrow_top = Math.round(tip_h - 13) / 2;
                                                arrow_left = -12;
                                                marg_left = Math.round(left + org_width + opts.edgeOffset);
                                                marg_top = Math.round(top + h_compare)
                                        } else if ((left_compare && w_compare < 0) || (t_class == "_left" && !right_compare)) {
                                                t_class = "_left";
                                                arrow_top = Math.round(tip_h - 13) / 2;
                                                arrow_left = Math.round(tip_w);
                                                marg_left = Math.round(left - (tip_w + opts.edgeOffset + 5));
                                                marg_top = Math.round(top + h_compare)
                                        }
                                        var top_compare = (top + org_height + opts.edgeOffset + tip_h + 8) > parseInt($(window).height() + $(window).scrollTop());
                                        var bottom_compare = ((top + org_height) - (opts.edgeOffset + tip_h + 8)) < 0;
                                        if (top_compare || (t_class == "_bottom" && top_compare) || (t_class == "_top" && !bottom_compare)) {
                                                if (t_class == "_top" || t_class == "_bottom") {
                                                        t_class = "_top"
                                                } else {
                                                        t_class = t_class + "_top"
                                                }
                                                arrow_top = tip_h;
                                                marg_top = Math.round(top - (tip_h + 5 + opts.edgeOffset))
                                        } else if (bottom_compare | (t_class == "_top" && bottom_compare) || (t_class == "_bottom" && !top_compare)) {
                                                if (t_class == "_top" || t_class == "_bottom") {
                                                        t_class = "_bottom"
                                                } else {
                                                        t_class = t_class + "_bottom"
                                                }
                                                arrow_top = -12;
                                                marg_top = Math.round(top + org_height + opts.edgeOffset)
                                        }
                                        if (t_class == "_right_top" || t_class == "_left_top") {
                                                marg_top = marg_top + 5
                                        } else if (t_class == "_right_bottom" || t_class == "_left_bottom") {
                                                marg_top = marg_top - 5
                                        }
                                        if (t_class == "_left_top" || t_class == "_left_bottom") {
                                                marg_left = marg_left + 5
                                        }
                                        tiptip_arrow.css({
                                                "margin-left": arrow_left + "px",
                                                "margin-top": arrow_top + "px"
                                        });
                                        tiptip_holder.css({
                                                "margin-left": marg_left + "px",
                                                "margin-top": marg_top + "px"
                                        }).attr("class", "tip" + t_class);
                                        if (timeout) {
                                                clearTimeout(timeout)
                                        }
                                        timeout = setTimeout(function() {
                                                tiptip_holder.stop(true, true).fadeIn(opts.fadeIn)
                                        },
                                        opts.delay)
                                }
                                function deactive_tiptip() {
                                        opts.exit.call(this);
                                        if (timeout) {
                                                clearTimeout(timeout)
                                        }
                                        tiptip_holder.fadeOut(opts.fadeOut)
                                }
                        }
                })
        }
})(jQuery);